﻿// APP.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。

#include <iostream>
#include <cstdlib>
#include "Log.cpp"


#ifdef _WIN32
#include <stdio.h>
#define popen _popen
#define pclose _pclose
#else
#include <stdio.h>
#endif

// ... 你的其他代码保持不变 ...
/**
 * @brief 执行 ADB 命令
 *
 * 使用 popen() 函数执行传入的 ADB 命令，并返回命令的输出结果。
 *
 * @param command 要执行的 ADB 命令字符串
 * @return ADB 命令的输出结果字符串，如果执行失败则返回 "Failed to execute adb devices command."
 */
std::string ADBcmd(const std::string &command)
{
    // 使用popen函数创建一个管道来执行命令
    FILE *pipe = popen(command.c_str(), "r");
    // 如果管道创建失败，则返回错误信息
    if (!pipe)
        return "Failed to execute adb devices command.";

    // 定义一个缓冲区来存储从管道读取的数据
    char buffer[128];
    std::string result;
    // 循环读取管道中的数据，直到到达文件末尾
    while (!feof(pipe))
    {
        // 从管道中读取一行数据到缓冲区
        if (fgets(buffer, 128, pipe) != NULL)
            // 将读取到的数据追加到结果字符串中
            result += buffer;
    }
    // 关闭管道
    pclose(pipe);
    // 返回执行命令的结果
    return result;
}

std::string Input(const std::string &prompt)
{
    std::cout << prompt;
    std::string input;
    std::getline(std::cin, input);
    printf("输入的内容是：%s\n", input.c_str());
    return input;
}

class ADB
{
public:
    void screen_up()
    {
        std::string command = "adb shell input keyevent 224";
        LOG(LogLevel::DEBUG, "screen_up");
    }

    void screen_down()
    {
        std::string command = "adb shell input keyevent 223";
        LOG(LogLevel::DEBUG, "screen_down");
    }
};

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧:
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
